Основа Интерфейс гетерогенных вычислений для портируемости (HIP) заключается в способности абстрагировать аппаратно-зависимые инструментарии в единый интерфейс среды выполнения на языке C++. Используя парадигму единого источника, разработчики могут поддерживать один код, который динамически отображается на платформы NVIDIA или AMD.
1. Разрешение аппаратных средств по пути
Архитектура зависит от маркеров среды, которые служат ориентирами для системы сборки. Эти маркеры указывают hipcc обёртке компилятора, где найти необходимые библиотеки устройств и заголовочные файлы.
- CUDA_PATH: Основной ориентир для стека NVIDIA (рабочие процессы NVCC/PTX).
- HIP_PATH: Основной ориентир для стека AMD ROCm (рабочие процессы Clang/LLVM).
2. Абстрагирование стека вычислений
Портируемость достигается за счёт отделения уровня приложений от микроархитектуры. Логика решается во время сборки с использованием hipcc, что обеспечивает, что поддержка кода сложностью $O(1)$ приводит к совместимости со $O(N)$ аппаратными средствами.